package com.bjpowernode.javase.collection;

import java.util.*;

/*
java.util.Map：
    1、Map和Collection没有继承关系
    2、Map集合以key和value的方式存储数据：键值对：
        key和value都是引用数据类型。
        key和value都是存储对象的内存地址。
        key起主导地位，value是key的一个附属品。

   3、Map接口中常用的方法：
    V put(K key, V value) 向Map集合中添加键值对
    void clear()    清空Map集合
    boolean	containsKey(Object key) 判断Map集合中是否包含补个key
    boolean	containsValue(Object value) 判断Map集合中是否包含某个value
    V	get(Object key) 通过key获取Value
    boolean	isEmpty()   判断Map集合中元素个数是否为0
    V	remove(Object key)  通过key删除键值对
    int	size()  获取Map集合中键值对的个数

    Collection<V>	values() 获取Map集合中所有的value，返回一个Collection集合
    Set<K>	keySet()    获取map集合中所有的key（所有的键是一个set集合）

    Set<Map.Entry<K,V>> entrySet()  将Map集合转换为set集合
        假设现有一个Map集合，如下所示：
        map1集合对象
        key      value
        ——————————————————
        1       zhangsan
        2       wangwu
        3       lisi

       Set set = map1.entrySet();
       set集合对象如下：
       set的数据类型为：Map.Entry<K,V>
       1=zhangsan
       2=wangwu
       3=lisi
 */
public class MapTest01 {
    public static void main(String[] args) {

        //创建Map集合对象
        Map<Integer,String> map = new HashMap<>();
        //向Map集合中添加键值对
        map.put(1,"zhagnsan");//1在这里是自动装箱成Integer
        map.put(2,"lisi");
        map.put(3,"wangwu");
        map.put(4,"zhaoliu");

        //通过key获取value
        String value = map.get(2);
        System.out.println(value);

        //获取键值对的数量
        System.out.println(map.size());

        //通过key删除key，value键值对
        map.remove(2);
        System.out.println(map.size());

        //判断是否包含某个value
        //contains方法底层调用的都是equals();所以自定义的类需要重写equals方法。
        System.out.println(map.containsKey(4));//true
        System.out.println(map.containsKey(new Integer(4)));
        //判断是否包含某个key
        System.out.println(map.containsValue("wangwu"));//true
        System.out.println(map.containsValue(new String("wangwu")));//true

        //获取所有的values
        Collection<String> values = map.values();
        for(String s : values){
            System.out.println(s);
        }

        //获取所有的key
       Set<Integer> set =  map.keySet();
        for(Integer i : set){
            System.out.println(i);
        }

        //清空map集合
        map.clear();
        System.out.println(map.size());
        //判断是否为空
        System.out.println(map.isEmpty());

    }
}



